#include<bits/stdc++.h>
using namespace std;

string s;

// 获取一段字符串中的数字
int getNum(int begin, int end) {
	int t = 0;
	for (int i = end, j = 0 ; i >= begin ; i--, j++) {
		t += (s[i] - '0') * pow(10, j);
	}
	return t;
}

int main() {
	stack<int> num; //存放数字的栈
	// 栈是一种数据结构，特点是先进后出，类比一个羽毛球筒：只能拿出来最外侧的羽毛球
	stack<char> op; // 存放运算符的栈

	cin >> s;
	int begin = 0;
	// 处理输入的表达式：当检测到符号时，将前面的数字压进数字栈，将符号压进符号栈
	for(int i = 0 ; i < s.length() ; i++) {
		if(s[i] == '+' or s[i] == '*') {
			num.push(getNum(begin, i - 1));
			op.push(s[i]);
			begin = i + 1;
		}
	}
	// 压入最后一个数
	num.push(getNum(begin, s.length() - 1));

	int ans = 0;
	/*
	以符号栈为基准进行遍历：
	+符号：将数字栈最上面的数加入总答案
	*符号：将数字栈最上面的两个数弹出后进行相乘，结果重新压入栈
	处理结束后弹出符号，重复执行直到符号栈为空。
	在符号栈清空后将数字栈中最后一个字母加进总答案
	*/
	while(!op.empty()){
		if(op.top() == '+'){
			ans += num.top();
			num.pop();
		}
		else{
			int t1 = num.top();
			num.pop();
			int t2 = num.top();
			num.pop();
			num.push(t1 * t2);
		}
		op.pop();
	}
	ans += num.top();
	cout << ans % 10000; // 保留后四位
	
	return 0;
}
